<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>

    /**
     *   总结 数组的API
     *   shift  删除数组第一个元素，并返回它
     *   pop    删除数组最后一个元素，并返回它
     *
     *   unshift  在数组头部添加若干个元素，返回新数组的长度
     *
     *   join     数组转字符串，并且某符号进行分隔
     *   split    字符串转数组，并用某符号划分数组
     *
     *   fill  对数组填充元素，它会改变原数组，返回新数组
     *         参数(要填充的元素值,起始索引，结束索引),索引为负时，计算方式为索引+长度
     *         踩坑： 尽量不要填充复杂数据类型，以及null,undefined 等
     */

    const arr = [1, 2, 3]
    arr.unshift(0)  // 头部添加元素 0

    arr.unshift(-2, -1) // 添加多个元素

    console.log('unshift头部添加元素:', arr) // [-2, -1, 0, 1, 2, 3]

    arr.pop()

    console.log('pop删除最后一个元素:', arr)   // [-1,0,1,2,3]

    arr.shift()

    console.log('shift删除第一个元素：', arr)  // [-1,0,1,2]

    console.log('数组转字符串用,符号分隔:', arr.join(','))  // -1,0,1,2

    console.log('字符串转数组:', "123,abc,book".split(','))  // ['123', 'abc', 'book']


    // 面试题   a 定义成什么，使得 a='1' a='2' a='3'
    let a = [1, 2, 3]
    a.join = a.shift
    if (a == '1' && a == '2' && a == '3') {
        console.log(true)
    } else {
        console.log(false)
    }

    let k = [1,2,3,4,5,6]
    console.log('fill:',k.fill(10,2,4));   // 索引范围是[2,4) 填充为10     1,2,10,10,5,6
    console.log(k.fill(0)) // 重置0
</script>
</body>
</html>